/**
 * API 接口配置文件
 * 包含所有接口地址和请求封装函数
 */

// 基础配置
const BASE_URL = 'http://106.52.199.93:5000/api/ab';

// 请求超时时间（毫秒）
const TIMEOUT = 10000;

// 请求封装函数
class Request {
  constructor() {
    this.baseURL = BASE_URL;
    this.timeout = TIMEOUT;
    // 设置默认 token
    this.token = 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiIxIiwic3ViIjoiMSIsImlhdCI6MTc2MzI3NTU1MSwiZXhwIjoxNzYzMzM3NTk5fQ.WDWxfUeydyATGeX6Zrw-l4xMLlIjyJG02Gvp4aTcvnU';
  }

  // 基础请求方法
  request(options) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: this.baseURL + options.url,
        method: options.method || 'GET',
        data: options.data || {},
        header: {
          'Content-Type': 'application/json',
          'authorization': this.token,
          ...options.header
        },
        timeout: this.timeout,
        success: (res) => {
          if (res.statusCode === 200) {
            // 如果响应数据是数组，直接返回（兼容不同API格式）
            if (Array.isArray(res.data)) {
              resolve(res.data);
            } else if (res.data.code === 200 || res.data.code === 0) {
              resolve(res.data);
            } else {
              // 统一错误处理
              uni.showToast({
                title: res.data.message || '请求失败',
                icon: 'none'
              });
              reject(res.data);
            }
          } else {
            uni.showToast({
              title: '网络错误',
              icon: 'none'
            });
            reject(res);
          }
        },
        fail: (err) => {
          uni.showToast({
            title: '网络连接失败',
            icon: 'none'
          });
          reject(err);
        }
      });
    });
  }

  // GET 请求
  get(url, data = {}, header = {}) {
    return this.request({
      url,
      method: 'GET',
      data,
      header
    });
  }

  // 设置 token
  setToken(token) {
    this.token = token;
  }

  // 获取 token
  getToken() {
    return this.token;
  }

  // POST 请求
  post(url, data = {}, header = {}) {
    return this.request({
      url,
      method: 'POST',
      data,
      header
    });
  }

  // PUT 请求
  put(url, data = {}, header = {}) {
    return this.request({
      url,
      method: 'PUT',
      data,
      header
    });
  }

  // DELETE 请求
  delete(url, data = {}, header = {}) {
    return this.request({
      url,
      method: 'DELETE',
      data,
      header
    });
  }
}

// 创建请求实例
const request = new Request();

// 接口地址配置
const API = {
  // 商品管理模块
  PRODUCT_MANAGE: {
    CATEGORY_TREE: '/category/tree', // 商品分类树
  },
  // 广告管理模块
  ADVERT: {
    LIST: '/ad/list' // 广告列表
  },
  
  // 商品管理模块
  PRODUCT: {
    LIST: '/product/list' // 商品列表
  },
  
  // 个人寄售管理模块
  CONSIGNMENT: {
    LIST: '/consignment/list', // 个人寄售列表
    DETAIL: '/consignment/{id}' // 个人寄售详情
  },

  // 用户模块
  USER: {
    GET_PHONE_NUMBER: '/user/getPhoneNumber', // 获取手机号
    ADD: '/user/add' // 新增用户
  }
};

// 导出 API 配置和请求方法
export {
  request,
  API
};

// 默认导出
export default {
  request,
  API
};